<html>
<head>
<title>JipViewer help</title>
</head>
<body>

<p>The display is divided into two halves.  In the top half, a tabbed
pane displays information about the whole profile.  In the bottom, the
"method viewer" displaying information about the selected method.</p>

<p>All of the views can set and display the globally selected "current
method".</p>

<h1>Tabs</h1>

<p>There are three tabs -- a call tree, a method table, and this
help text.</p>

<h2>Call Tree</h2>

<p>The call tree tab shows the various profiled interactions.  An
interaction is just the top-level method calls that the profiler can
see.  Methods are shown as the children of their callers.  The
children of each function are sorted in descending order of their
total time.</p>

<p>Selecting a call frame makes its method the "current method".</p>

<h2>All Methods</h2>

<p>The methods tab displays all of the methods that were measured.
You can click on the column headers to sort the rows.  The total times
shown do not include the time of any nested, reentrant calls to the
method.  The "% total" is out of the sum of all of the methods across
all threads.</p>

<h2>By Package</h2>

<p>This view shows a tree of the packages.  Each line shows the sum of
the <i>net</i> time spent in that package and its sub-packages.  Yes,
Java doesn't really have "sub"-packages, but the names are
hierarchical so it still works.  The number next to each name is the
sum of the things below it.  If a non-leaf node has some time assigned
to it separate from its descendants, that will be called out as
"(self: ...)".</p>

<h2>Help</h2>

<p>You're reading it, aren't you?  So you were probably able to find
it and figure out how to read it, right?</p>

<h1>Method Viewer</h1>

<p>The method viewer displays details about the callers and callees of
the current method.  It is divided into three sections.</p>

<h2>Self</h2>

<p>The middle section of the method viewer displays the current
method.  The total time is the total of all the times that method was
called by all of its callers.  (The percentage is out of that number,
so %total should always be 100%.)</p>

<h2>Called By</h2>

<p>This table shows all of the methods that called self.  The total
time is the total time taken by all of the callers and the percentages
are based on that time.</p>

<p>Double-click on a calling method's row to make it the current
method -- the new self.</p>

<h2>Calls</h2>

<p>This table shows all of the methods that self called.  The total
time is the total time spent in self and the percentages are based on
that time.</p>

<hr>
<hr>

<h1>Licenses</h1>

<p>JipViewer contains code written by TiVo Inc and includes the
TableSorter class from the Java Swing tutorial.  With the exception of
the TableSorter class, this code is covered by the following
license:</p>

<pre>
     Copyright (C) 2006 TiVo Inc.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, are permitted provided that the following
     conditions are met:

     + Redistributions of source code must retain the above copyright
       notice, this list of conditions and the following disclaimer.

     + Redistributions in binary form must reproduce the above
       copyright notice, this list of conditions and the following
       disclaimer in the documentation and/or other materials provided
       with the distribution.

     + Neither the name of TiVo Inc nor the names of its contributors
       may be used to endorse or promote products derived from this
       software without specific prior written permission.

       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
       CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
       INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
       DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
       CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
       SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
       NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
       LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
       HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
       CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
       OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
       EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</pre>

<p>According the the Swing tutorial website, the TableSorter class is
covered by the following license:</p>

<pre>
     Copyright 1994-2006 Sun Microsystems, Inc. All Rights Reserved.

     Redistribution and use in source and binary forms, with or
     without modification, are permitted provided that the following
     conditions are met:
      
         * Redistribution of source code must retain the above copyright
           notice, this list of conditions and the following disclaimer.

         * Redistribution in binary form must reproduce the above copyright
           notice, this list of conditions and the following disclaimer in the
           documentation and/or other materials provided with the distribution.
      
     Neither the name of Sun Microsystems, Inc. or the names of contributors
     may be used to endorse or promote products derived from this software
     without specific prior written permission.
      
     This software is provided "AS IS," without a warranty of any kind. ALL
     EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
     ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
     OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN")
     AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE
     AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
     DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST
     REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,
     INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE
     THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS
     SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
      
     You acknowledge that this software is not designed, licensed or intended
     for use in the design, construction, operation or maintenance of any
     nuclear facility.
</pre>

</body>
</html>
